'use strict';

const Controller = require('egg').Controller;
const fs = require('fs');
const path = require('path');
class HomeController extends Controller {
  async updateuser() { // 通过verifyToken校验才能执行该函数
    // 获取用户信息 从解密之后的token中获取
    const { id, phone, email, password, type, faceimage } = this.ctx.userInfo;
    // 定义res 更新 id phone email password type faceimage 
    const res = await this.app.mysql.update('user', {
      id,
      phone,
      email,
      password,
      type,
      faceimage,
      //用传来的值更替要修改的值
      ...this.ctx.request.body,
    });
    if (res.changedRows) {
      this.ctx.body = {
        code: 'SUCCESS',
        status: 200,
        msg: '更新成功',
      };
    }
  }
  async uploadimage() {
    // 图像提交
    // 获取file下的第一个file对象
    const file = this.ctx.request.files[0];
    // 读取第一个file对象下的filepath路径
    const data = fs.readFileSync(file.filepath);
    // 定义写入图片的名字     当前时间戳              后缀名是读取文件的最后结尾
    const filename = `file_${Date.now()}_${file.filename.match(/\.\w+$/)[0]}`;
    // 将 写入图片名字转为json字符串 的路径
    const targetPath = path.join(__dirname, '../public/images', filename);
    // 写入图片
    fs.writeFileSync(targetPath, data);

    this.ctx.body = {
      code: 'SUCCESS',
      status: 200,
      msg: '头像上传成功',
      data: {
        // 返回图片地址路径
        url: '/public/images/' + filename,
      },
    };
  }
  async index() { // 通过verifyToken校验才能执行该函数
    this.ctx.body = {
      code: 'SUCCESS',
      status: 200,
      msg: '获取用户信息成功',
      // token的解密
      data: this.ctx.userInfo,
    };
  }
  async login() {
    // 从
    const { body } = this.ctx.request;
    const { service } = this.ctx;
    // 表单校验  egg-validate
    const errors = this.app.validator.validate({ password: 'password', phone: 'phone' }, body);
    if (errors) {
      this.ctx.status = 417;
      this.ctx.body = {
        code: 'FAIL',
        status: 417,
        msg: '校验未通过',
        data: errors,
      };
      return;
    }
    // 查数据库
    const res = await service.user.login(body);
    if (res) {
      // 登录成功
      const { sign } = this.ctx.helper.token;
      this.ctx.status = 200;
      this.ctx.body = {
        code: 'SUCCESS',
        msg: '登录成功',
        status: 200,
        data: {
          token: sign({ ...res }),
        },
      };
      return;
    }
    this.ctx.status = 200;
    this.ctx.body = {
      code: 'FAIL',
      status: 200,
      msg: '邮箱或手机号或密码输入有误！',
    };
    return;

  }
  async dataList() { // 通过verifyToken校验才能执行该函数
    this.ctx.body = {
      code: 'SUCCESS',
      status: 200,
      msg: '获取用户信息成功',
      // token的解密
      data: this.ctx.userInfo,
    };
  }
}

module.exports = HomeController;
